package com.zwj.spring_study.a03;


import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

/**
 * Bean的生命周期：构造方法->依赖注入->Bean的初始化方法->销毁方法
 * @author 张文接
 * @version 1.0
 * @createTime 2024/5/26 13:47
 */
@Slf4j
@Component
public class LifeCycleBean {

    /**
     * 构造方法
     */
    public LifeCycleBean() {
        log.debug("构造方法");
    }

    /**
     * 依赖注入
     * @param home 注入的值，可以是环境变量也可以是类
     */
    @Autowired
    public void autowire(@Value("${JAVA_HOME}") String home) {
        log.debug("依赖注入：{}", home);
    }

    /**
     * 初始化方法
     */
    @PostConstruct
    public void init() {
        log.debug("初始化");
    }

    /**
     * 销毁方法
     */
    @PreDestroy
    public void destroy() {
        log.debug("销毁");
    }
}
